package com.yanze.schoolinformation.utils;

import android.content.Context;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * 文件流存储工具
 * Created by MrZheng on 2017/11/23.
 */

public class FileSaveUtils {

    private static FileSaveUtils mFileSaveUtils;
    private static final String USERINFO_PATH = "/user.txt";//保存用户信息的文件路径

    private FileSaveUtils() {
//        mContext.getExternalCacheDir();//SDCard/Android/data/youPackageName/cache/目录，一般存放临时缓存数据
//        mContext.getExternalFilesDir("");//SDCard/Android/data/youPackageName/files/ 目录，一般放一些长时间保存的数据
//        mContext.getCacheDir();///data/data/youPackageName/cache的File对象,数据超过1MB的时候，系统会删除这个文件夹里面的数据
//        mContext.getFilesDir();///data/data/youPackageName/files的File对象。

//        path_files = mContext.getDir("config", Context.MODE_PRIVATE);//data/data/youPackageName/ 下的指定名称的文件夹File对象

//        mContext.deleteFile("");//删除files下指定名称的文件。

//        mContext.openFileInput("");//只能读取和写入files下的文件，返回的是FileInputStream和FileOutputStream对象
//        mContext.openFileOutput("");//只能读取和写入files下的文件，返回的是FileInputStream和FileOutputStream对象
    }

    public static FileSaveUtils getInstance() {
        synchronized (FileSaveUtils.class) {
            if (mFileSaveUtils == null) {
                mFileSaveUtils = new FileSaveUtils();
            }
        }
        return mFileSaveUtils;
    }

    /**
     * 保存数据到指定文件
     * @param object 数据
     * @param file 文件
     */
    public void saveObjCache(Object object, File file) {
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            FileOutputStream fos = new FileOutputStream(file);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(object);
            oos.flush();
            oos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 从指定文件读取数据
     * @param file
     * @return
     */
    public Object getObjCache(File file) {
        if (!file.exists()) {
            return null;
        }
        try {
            FileInputStream fis = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(fis);
            Object object = ois.readObject();
            return object;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }

}
